import greenfoot.*;
/**
 * Write a description of class Player here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Jugador extends Actor
{
    // instance variables - replace the example below with your own
    private final static int IMAGE_COUNT= 2;
    public int disparo = 1;
    public int invi = 50;
    public int podbala=0;
    public int tiempo=0;
    private static GreenfootImage[] images;
    
    public Jugador()
    {
     initializeImages();
     setImage(images[0]);
    }
    

    /**
     * Constructor for objects of class Player
     */
    public void act()
    {
        setImage(images[0]);
        mover();
        colisionpoder();
        if(invi<1)
         colisionene();
        else
        {
         invi--;
         setImage(images[1]);
        }
        if(tiempo==30){
         podbala=0;   
         tiempo=0;}
    }
   
    /**
     * Aqui para mover al jugador se utliza algunas teclas correspondientes, es decir como mover al jugador
     * y como disparar
     */
    public void mover()
    {
        if (Greenfoot.isKeyDown("left"))
        {
            setLocation(getX()-5,getY());
        }
        
        if (Greenfoot.isKeyDown("right"))
        {
            setLocation(getX()+5,getY());
        }
        
        if (Greenfoot.isKeyDown("up"))
        {
            setLocation(getX(),getY()-5);
        }
        
        if (Greenfoot.isKeyDown("down"))
        {
            setLocation(getX(),getY()+5);
        }
        
        if (Greenfoot.isKeyDown("space"))
        {
            if (disparo == 1&&podbala==0)
            {
                getWorld().addObject(new Balajug(),getX(),getY());
                disparo = 0;
                Greenfoot.playSound("Bullet2.wav");
                
            }
            if (disparo == 1&&podbala==1)
            {
             getWorld().addObject(new Balapod(),getX(),getY());
             disparo = 0;
             Greenfoot.playSound("lol.wav");
             tiempo++;
            }
        }
        
        if (!Greenfoot.isKeyDown("space"))
        {
            disparo = 1;
        }
    
    }
    
    /**
     * En este metodo checa si colisiono con algunos de estos objetos
     */
    public void colisionene()
    {
        Aspire w = (Aspire)getWorld();
        Actor aste = getOneIntersectingObject(Asteroid.class);
        Actor ene = getOneIntersectingObject(Enemigo1.class);
        Actor ene2 = getOneIntersectingObject(Enemigo2.class);
        Actor ene3 = getOneIntersectingObject(Enemigo3.class);
        Actor bala = getOneIntersectingObject(BalaEne.class);
        Actor bala2 = getOneIntersectingObject(Balasup.class);
        if (aste!=null||ene!=null||ene2!=null||ene3!=null||bala!=null||bala2!=null)
        {
           getWorld().addObject( new Explosion(), getX(), getY() );
           w.loseLife();
           invi=60;
        if(bala2!=null){
         w.loseLife();
         w.loseLife();
        }
        if((w.getLives())<1)
        {
            getWorld().removeObject(this);
            invi=0;
        }
        
        }
       
    }
    
    /**
     * Checa si colisiono con algunos de los poderes
     */
    public void colisionpoder()
    {
        Aspire w = (Aspire)getWorld();
        Actor poder1 = getOneIntersectingObject(Vidas.class);
        Actor poder2 = getOneIntersectingObject(Escudo.class);
        Actor poder3 = getOneIntersectingObject(Poderbala.class);
        if(poder1!=null)
        {
            getWorld().removeObject(poder1);
            w.addLife(1);
            w.countpod(-1);
        }
        if(poder2!=null)
        {
            getWorld().removeObject(poder2);
            invi=700;
            w.countpod(-1);
        }
        if(poder3!=null)
        {
            getWorld().removeObject(poder3);
            w.countpod(-1);
            podbala=1;
        }
    
    }
    
    public synchronized static void initializeImages() 
    {
        if(images == null) {
            images = new GreenfootImage[IMAGE_COUNT];
            for (int i = 0; i < IMAGE_COUNT; i++)
            {
            images[i] = new GreenfootImage("player"+ (i+1) + ".png");
            
        }
        }
    }
   
    
}
